The present technique relates to an apparatus and method for transferring data between address ranges in memory.
Within data processing systems, situations may arise where it is desired to move blocks of data between different physical locations in memory. For example, often the memory system will be arranged as a series of pages, and it may be desired to migrate data from one page to another page, to merge multiple smaller pages into a larger page, etc.
Often, the operating system running on a processor within the system may be used to manage the transfer of the data between the different physical locations in memory. However, the process of transferring the data under such software control can take a significant period of time. This not only consumes significant processor resources, but also requires steps to be taken during that period to ensure that any attempted accesses to the data that is being subjected to the transfer operation do not give rise to inconsistencies in the data. Often this may require write accesses to be blocked until the transfer operation is complete.
Furthermore, when performing such data migration tasks under operating system control, the process typically requires multiple memory management operations, which can also give rise to performance issues due to the time taken to perform those memory management operations.
It would hence be desirable to provide an improved mechanism for handling the transferring of data between address ranges in the memory.